From 442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 1 Jul 2011 20:43:55 +0100 Subject: [PATCH] x86: streamline page fault path #PF is, in all "normal" usage models, the only potentially high frequency (and hence performance sensitive) exception. Thus make it the fall-through case into handle_exception (rather than divide_error for x86-32 and not having one at all for x86-64). Signed-off-by: Jan Beulich --- xen/arch/x86/x86_32/entry.S | 13 ++++++------- xen/arch/x86/x86_64/entry.S | 10 ++++------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/xen/arch/x86/x86_32/entry.S b/xen/arch/x86/x86_32/entry.S index 2d7901fa17..c36a9939e1 100644 --- a/xen/arch/x86/x86_32/entry.S +++ b/xen/arch/x86/x86_32/entry.S @@ -426,9 +426,8 @@ ENTRY(ret_from_intr) jnz test_all_events jmp restore_all_xen -ENTRY(divide_error) - pushl $TRAP_divide_error<<16 - ALIGN +ENTRY(page_fault) + movw $TRAP_page_fault,2(%esp) handle_exception: FIXUP_RING0_GUEST_STACK SAVE_ALL(1f,2f) @@ -501,6 +500,10 @@ ENTRY(device_not_available) pushl $TRAP_no_device<<16 jmp handle_exception +ENTRY(divide_error) + pushl $TRAP_divide_error<<16 + jmp handle_exception + ENTRY(debug) pushl $TRAP_debug<<16 jmp handle_exception @@ -545,10 +548,6 @@ ENTRY(alignment_check) movw $TRAP_alignment_check,2(%esp) jmp handle_exception -ENTRY(page_fault) - movw $TRAP_page_fault,2(%esp) - jmp handle_exception - ENTRY(spurious_interrupt_bug) pushl $TRAP_spurious_int<<16 jmp handle_exception diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 4d49c4331c..fa51287a87 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -461,9 +461,11 @@ ENTRY(ret_from_intr) jz test_all_events jmp compat_test_all_events - ALIGN +ENTRY(page_fault) + movl $TRAP_page_fault,4(%rsp) /* No special register assumptions. */ -ENTRY(handle_exception) + .globl handle_exception +handle_exception: SAVE_ALL handle_exception_saved: testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp) @@ -585,10 +587,6 @@ ENTRY(alignment_check) movl $TRAP_alignment_check,4(%rsp) jmp handle_exception -ENTRY(page_fault) - movl $TRAP_page_fault,4(%rsp) - jmp handle_exception - ENTRY(spurious_interrupt_bug) pushq $0 movl $TRAP_spurious_int,4(%rsp) -- 2.30.2